/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import POJO.Chitietdonhang;
import POJO.Donhang;
import UTIL.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 *
 * @author nhlvu07db373
 */
public class ChitietdonhangDAO extends HibernateDaoSupport{

    private Session session;

    /**
     * Lấy danh sách chi tiết của đơn hàng
     * @param maHoaDon mã hóa đơn
     * @return 
     */
    public List dsChitietdonhang(String maHoaDon) {
        List list = null;
        session = HibernateUtil.getSessionFactory().openSession();
        try {
            org.hibernate.Transaction ts = session.beginTransaction();
            Criteria crit = session.createCriteria(Chitietdonhang.class).add(Restrictions.like("maHoaDon", maHoaDon));
            list = crit.list();
            ts.commit();
            session.flush();
        } catch (Exception ex) {
            if (session.getTransaction().isActive()) {
                session.getTransaction().rollback();
            }
            System.err.println(ex.getMessage().toString());
        } finally {
            session.close();
        }
        return list;
    }

    /**
     * Lấy danh sách chi tiết đơn hàng theo tình trạng
     * @param maDonHang mã đơn hàng
     * @param tinhTrang 0 hủy 1 chấp nhận
     * @return List chi tiết đơn hàng
     */
    public List dsChitietdonhang(String maDonHang, int tinhTrang) {
        List list = null;
        session = HibernateUtil.getSessionFactory().openSession();
        try {
            org.hibernate.Transaction ts = session.beginTransaction();
            Criteria crit = session.createCriteria(Chitietdonhang.class).add(Restrictions.and(
                    Restrictions.like("maDonHang", maDonHang), Restrictions.eq("tinhTrang", tinhTrang)));
            list = crit.list();
            ts.commit();
            session.flush();
        } catch (Exception ex) {
            System.err.println(ex.getMessage().toString());
        } finally {
            session.close();
        }
        return list;
    }

    /**
     * Lấy thông tin chi tiết đơn hàng
     * @param maChiTietDonHang
     * @return 
     */
    public Chitietdonhang layChitietdonhang(String maChiTietDonHang) {
        Chitietdonhang ctDh = null;
        session = HibernateUtil.getSessionFactory().openSession();
        try {
            org.hibernate.Transaction ts = session.beginTransaction();
            Criteria crit = session.createCriteria(Chitietdonhang.class).add(Restrictions.like("maChiTietDonHang", maChiTietDonHang));
            List list = crit.list();
            ctDh = (Chitietdonhang) list.get(0);
            ts.commit();
            session.flush();
        } catch (Exception ex) {
            System.err.println(ex.getMessage().toString());
        } finally {
            session.close();
        }
        return ctDh;
    }

    /**
     * Thực hiện ghi nhận thay đổi hay thêm mói chi tiết
     * @param ctDh chi tiết đơn hàn POJO
     * @return kết quả là true nếu xử lí thành công và ngược lại
     */
    public boolean luuChitietdonhang(Chitietdonhang ctDh) {
        boolean kq = false;
        if (ctDh.getMaChiTietDonHang().equals("")) {
            String maCtdh = new GetIDDAO().getID("CTDH", "chitietdonhang", "MaChiTietDonHang");
            ctDh.setMaDonHang(maCtdh);
        }
        session = HibernateUtil.getSessionFactory().openSession();
        try {
            org.hibernate.Transaction ts = session.beginTransaction();
            session.saveOrUpdate(ctDh);
            ts.commit();
            session.flush();
            kq = true;
        } catch (Exception ex) {
            if (session.getTransaction().isActive()) {
                session.getTransaction().rollback();
            }
            System.err.println(ex.getMessage().toString());
        } finally {
            session.close();
        }
        return kq;
    }

    /**
     * Đánh dấu xóa chi tiết đơn hàng
     * @param ctDh,mactDh chi tiết đơn hàng POJO hay là mã chi tiết đơn hàng
     * @return 
     */
    public boolean danhdauxoaChitietdonhang(Chitietdonhang ctDh) {
        ctDh.setTinhTrang(0);
        return luuChitietdonhang(ctDh);

    }

    public boolean danhdauxoaChitietdonhang(String mactDh) {
        Chitietdonhang ctDh = layChitietdonhang(mactDh);
        ctDh.setTinhTrang(0);
        return luuChitietdonhang(ctDh);
    }
}
